package cn.itcast.nems.journal.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 
 * 退学凭单创建对象
 *
 * @author 刘曙
 *
 * @version 
 *
 * @since 2024年3月25日
 */
@Data
public class JournalDropoutCreateDTO implements Serializable {
    private static final long serialVersionUID = 877205227150215572L;

    /**
     * 退学的学籍ID
     */
    private String studentRecordId;

    /**
     * 业务实际办理日期;退学日期。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime bizDate;

    /**
     * 退费类型;枚举值：退学不退费｜、退学退费｜
     */
    private JournalDropoutTypeEnum type;
    
    /**
     * 退学原因CODE;来自字典表
     */
    private String reasonCode;
    
    /**
     * 本次退费金额
     */
    private BigDecimal amount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否特殊退费：0否、1是
     */
    private Boolean specialFlag;
    
    /**
     * 是否已开发票；枚举值：未开发票｜0、已开票｜1
     */
    private Boolean invoiceFlag;
    
    /**
     * 是否贷款学员；枚举值：非贷款学员｜0、贷款学员｜1
     */
    private Boolean loanFlag;
    
    /**
     * 所属公司编码;财务上退费资金所属的公司。
     */
    private String companyCode;
    
    /**
     * 是否保存为草稿
     */
    private Boolean draftFlag;

    /**
     * 
     * 退学类型
     *
     * @author 刘曙
     *
     * @version 
     *
     * @since 2024年3月25日
     */
    public enum JournalDropoutTypeEnum {
        /** 退学不退费 */
        DROPOUT,
        /** 退学退费 */
        DROPOUT_REFUND;
    }
}
